#pragma once

#include <iostream>
#include <vector>
#include <ctime>


typedef void(*task_t)();  //函数指针  ，下面每一个函数均在函数指针包括的里面

void PrintLog()
{
    std :: cout << "我是一个打印日志的任务" << std :: endl;
}

void Download()
{
    std :: cout << "我是一个下载的任务" << std :: endl;
}

void Upload()
{
    std :: cout << "我是一个上传的任务" << std :: endl;
}


class TaskManger
{
public:
    TaskManger()
    {
        srand(time(nullptr));
    }
    ~TaskManger()
    {}
    //如果有新的任务加入就用到下面的函数
    void Register(task_t t)
    {
        _tasks.emplace_back(t);
    }
    //下面是随机的任务
    int Code()
    {
        return rand() % _tasks.size();
    }
    //下面是执行层
    void Excute(int code)
    {
        if(code >= 0 && code < _tasks.size())
        {
            _tasks[code]();
        }
    }
private:
    std :: vector<task_t> _tasks;
};